package models

import org.joda.time.Interval
import org.joda.time.DateTime


class Reserva(val fechaHora : DateTime, val horas: Int) {
  
  /**
   * @return un DateTime que representa el fin de la reserva
   */
  def fechaHoraFinal() = fechaHora.plusHours(horas)
  
  /**
   * @return un intervalo entre el inicio y el fin de la reserva
   */
  def intervaloDeReserva(): Interval = {
    val intervalo = new Interval(fechaHora, fechaHoraFinal())
    return intervalo
  }
  
  /**
   * @param una reserva
   * @return true, si una reserva se superpone con la consultada. Caso contrario devuelve false
   */
  def seSuperpone(r: Reserva) = intervaloDeReserva().overlaps(r.intervaloDeReserva())
  
  /**
   * @return true, si es fin de semana.
   */
  def esFinDeSemana(): Boolean = { 
    val dia = fechaHora.getDayOfWeek()
    return dia == 6 || dia == 7
  }
  
  /**
   * @return true, si el horario de esta reserva pasa las 18 hs.
   */
  def esHorarioNocturno() = fechaHora.getHourOfDay() >= 18
  
  /**
   * @return true, si el dia es lluvioso
   */
  def esDiaLluvioso() = SistemaMeteorologico.llueve(fechaHora)
  
}